package com.learn.english.service;

import com.learn.english.model.entity.UserMenu;
import com.learn.english.model.ro.MenuRo;

import java.util.List;

/**
 * @author TISNIW
 * @version 1.0
 * @date 2025/6/21 20:58
 * @desc 菜单服务接口，提供菜单管理相关功能
 */

public interface IMenuService {
    /**
     * 添加菜单
     * @param menu 菜单实体
     * @return 添加结果消息
     */
    String addMenu(UserMenu menu);

    /**
     * 根据角色ID获取菜单列表
     * @param roleId 角色ID
     * @param type 菜单类型
     * @param pageId 页面ID
     * @return 菜单列表
     */
    List<MenuRo> getMenu(int roleId, Integer type, Integer pageId);

    /**
     * 获取所有菜单的树形结构
     * @param name 菜单名称（模糊查询）
     * @param type 菜单类型
     * @param status 菜单状态
     * @return 菜单树结构
     */
    List<UserMenu> getMenuTree(String name, Byte type, Byte status);

    /**
     * 更新菜单
     * @param menu 菜单实体
     * @return 更新结果消息
     */
    String updateMenu(UserMenu menu);
    
    /**
     * 检查菜单是否有子菜单
     * @param menuId 菜单ID
     * @return 是否有子菜单
     */
    boolean hasChildren(Integer menuId);
    
    /**
     * 删除菜单
     * @param menuId 菜单ID
     * @return 删除结果消息
     */
    String deleteMenu(Integer menuId);
    
    /**
     * 批量删除菜单
     * @param ids 菜单ID列表
     * @return 删除结果消息
     */
    String batchDeleteMenus(List<Integer> ids);
    
    /**
     * 更新菜单状态
     * @param menuId 菜单ID
     * @param status 菜单状态
     * @return 更新结果消息
     */
    String updateMenuStatus(Integer menuId, Byte status);
}
